load("@io_bazel_rules_go//go:def.bzl", "go_library")
load("//bazel/go:go_test.bzl", "go_test")

go_library(
    name = "cmd",
    srcs = [
        "apply.go",
        "applyhelm.go",
        "applyinit.go",
        "applyterraform.go",
        "cloud.go",
        "cmd.go",
        "config.go",
        "configfetchmeasurements.go",
        "configgenerate.go",
        "configinstancetypes.go",
        "configkubernetesversions.go",
        "configmigrate.go",
        "create.go",
        "iam.go",
        "iamcreate.go",
        "iamcreateaws.go",
        "iamcreateazure.go",
        "iamcreategcp.go",
        "iamdestroy.go",
        "iamupgradeapply.go",
        "init.go",
        # keep
        "license_enterprise.go",
        "license_oss.go",
        "log.go",
        "maapatch.go",
        "mini.go",
        "minidown.go",
        "miniup.go",
        "miniup_cross.go",
        "miniup_linux_amd64.go",
        "recover.go",
        "spinner.go",
        "ssh.go",
        "status.go",
        "terminate.go",
        "upgrade.go",
        "upgradeapply.go",
        "upgradecheck.go",
        "userinteraction.go",
        "validargs.go",
        "verify.go",
        "version.go",
    ],
    importpath = "github.com/edgelesssys/constellation/v2/cli/internal/cmd",
    visibility = ["//cli:__subpackages__"],
    deps = [
        "//cli/internal/cloudcmd",
        "//cli/internal/cmd/pathprefix",
        "//cli/internal/libvirt",
        "//cli/internal/terraform",
        "//disk-mapper/recoverproto",
        "//internal/api/attestationconfigapi",
        "//internal/api/fetcher",
        "//internal/api/versionsapi",
        "//internal/atls",
        "//internal/attestation/choose",
        "//internal/attestation/measurements",
        "//internal/attestation/snp",
        "//internal/attestation/variant",
        "//internal/attestation/vtpm",
        "//internal/cloud/cloudprovider",
        "//internal/cloud/gcpshared",
        "//internal/compatibility",
        "//internal/config",
        "//internal/config/instancetypes",
        "//internal/config/migration",
        "//internal/constants",
        "//internal/constellation",
        "//internal/constellation/featureset",
        "//internal/constellation/helm",
        "//internal/constellation/kubecmd",
        "//internal/constellation/state",
        "//internal/crypto",
        "//internal/file",
        "//internal/grpc/dialer",
        "//internal/grpc/retry",
        "//internal/imagefetcher",
        "//internal/kms/uri",
        # keep
        "//internal/license",
        "//internal/logger",
        "//internal/maa",
        "//internal/retry",
        "//internal/semver",
        "//internal/sigstore",
        "//internal/sigstore/keyselect",
        "//internal/verify",
        "//internal/versions",
        "//verify/verifyproto",
        "@com_github_google_go_tpm_tools//proto/tpm",
        "@com_github_google_uuid//:uuid",
        "@com_github_mattn_go_isatty//:go-isatty",
        "@com_github_rogpeppe_go_internal//diff",
        "@com_github_samber_slog_multi//:slog-multi",
        "@com_github_siderolabs_talos_pkg_machinery//config/encoder",
        "@com_github_spf13_afero//:afero",
        "@com_github_spf13_cobra//:cobra",
        "@com_github_spf13_pflag//:pflag",
        "@in_gopkg_yaml_v3//:yaml_v3",
        "@io_k8s_apiextensions_apiserver//pkg/apis/apiextensions/v1:apiextensions",
        "@io_k8s_apimachinery//pkg/api/errors",
        "@io_k8s_apimachinery//pkg/runtime",
        "@io_k8s_client_go//tools/clientcmd",
        "@io_k8s_client_go//tools/clientcmd/api/latest",
        "@io_k8s_sigs_yaml//:yaml",
        "@org_golang_x_mod//semver",
        "@org_golang_google_grpc//:grpc",
        "@com_github_google_go_tdx_guest//abi",
        "@com_github_google_go_tdx_guest//proto/tdx",
        "//internal/attestation/azure/tdx",
        "@com_github_google_go_sev_guest//proto/sevsnp",
        "@com_github_google_go_tpm_tools//proto/attest",
        "@org_golang_x_crypto//ssh",
        "//internal/kms/setup",
    ] + select({
        "@io_bazel_rules_go//go/platform:android_amd64": [
            "@org_golang_x_sys//unix",
        ],
        "@io_bazel_rules_go//go/platform:linux_amd64": [
            "@org_golang_x_sys//unix",
        ],
        "//conditions:default": [],
    }),
)

go_test(
    name = "cmd_test",
    srcs = [
        "apply_test.go",
        "cloud_test.go",
        "configfetchmeasurements_test.go",
        "configgenerate_test.go",
        "create_test.go",
        "iamcreate_test.go",
        "iamdestroy_test.go",
        "iamupgradeapply_test.go",
        "init_test.go",
        "maapatch_test.go",
        "recover_test.go",
        "spinner_test.go",
        "ssh_test.go",
        "status_test.go",
        "terminate_test.go",
        "upgradeapply_test.go",
        "upgradecheck_test.go",
        "userinteraction_test.go",
        "validargs_test.go",
        "verifier_test.go",
        "verify_test.go",
        "version_test.go",
    ],
    embed = [":cmd"],
    deps = [
        "//bootstrapper/initproto",
        "//cli/internal/cloudcmd",
        "//cli/internal/cmd/pathprefix",
        "//cli/internal/terraform",
        "//disk-mapper/recoverproto",
        "//internal/api/attestationconfigapi",
        "//internal/api/versionsapi",
        "//internal/atls",
        "//internal/attestation/measurements",
        "//internal/attestation/variant",
        "//internal/cloud/cloudprovider",
        "//internal/cloud/gcpshared",
        "//internal/config",
        "//internal/constants",
        "//internal/constellation",
        "//internal/constellation/helm",
        "//internal/constellation/kubecmd",
        "//internal/constellation/state",
        "//internal/crypto",
        "//internal/crypto/testvector",
        "//internal/file",
        "//internal/grpc/atlscredentials",
        "//internal/grpc/dialer",
        "//internal/grpc/testdialer",
        "//internal/kms/uri",
        "//internal/logger",
        "//internal/semver",
        "//internal/versions",
        "//operators/constellation-node-operator/api/v1alpha1",
        "//verify/verifyproto",
        "@com_github_google_go_tpm_tools//proto/tpm",
        "@com_github_spf13_afero//:afero",
        "@com_github_spf13_cobra//:cobra",
        "@com_github_spf13_pflag//:pflag",
        "@com_github_stretchr_testify//assert",
        "@com_github_stretchr_testify//mock",
        "@com_github_stretchr_testify//require",
        "@io_k8s_api//core/v1:core",
        "@io_k8s_apiextensions_apiserver//pkg/apis/apiextensions/v1:apiextensions",
        "@io_k8s_apimachinery//pkg/api/errors",
        "@io_k8s_apimachinery//pkg/apis/meta/v1:meta",
        "@io_k8s_apimachinery//pkg/runtime/schema",
        "@io_k8s_client_go//tools/clientcmd",
        "@io_k8s_client_go//tools/clientcmd/api",
        "@org_golang_google_grpc//:grpc",
        "@org_golang_google_grpc//codes",
        "@org_golang_google_grpc//status",
        "@org_golang_x_crypto//ssh",
        "@org_golang_x_mod//semver",
        "@org_uber_go_goleak//:goleak",
    ],
)
